package cn.ly.design.structure;

/**
 * 代理模式的应用场景：
	如果需要对原有的方法进行改进，此时有两种办法：
	1、修改原有的方法来适应。这样违反了“对扩展开放，对修改关闭”的原则。
	2、就是采用一个代理类调用原有的方法，且对产生的结果进行控制。这种方法就是代理模式。
	使用代理模式，可以将功能划分的更加清晰，有助于后期维护！
 * @author liuyu
 *
 */

public class Proxy implements PSourceable{
	
	private PSource psource;
	
	public Proxy(){
		this.psource = new PSource();//代理这个PSource
	}

	@Override
	public void method() {
		System.out.println("before do something");
		
		this.psource.method();
		
		System.out.println("after do something");
	}

}

interface PSourceable{
	void method();
}

class PSource{
	public void method(){
		System.out.println("this is PSource");
	}
}


